/**
 * 类型系统的核心
 */
export abstract class DataType {
    abstract name: string // 类型的全名，一个类型具有唯一的fullname
    abstract default: any // 类型的默认值
    is(t?: DataType) {
        return !!t && this.name === t.name
    }
    abstract receiveType(t: DataType) : boolean // 类型可不可以兼容另一个类型
    abstract receiveValue(t: any) : boolean // 值是否属于这个类型
}